using UnityEngine;
using LitJson;
using System.Collections.Generic;
public class LoginManager
{
    private static LoginManager instance = new LoginManager();
    public static LoginManager Instance => instance;
    //声明注册数据的私有变量
    private RegisterData registerData;
    //声明注册数据的属性，方便外面调用
    public RegisterData RegisterData => registerData;
    //声明登录数据的私有变量 不用在外面new
    private LoginData loginData;
    //公共属性，方便外面获取
    public LoginData LoginData => loginData;
    //服务器数据的集合
    private List<ServerInfo> serverData;
    public List<ServerInfo> ServerData => serverData;
    //初始化时读取数据
    private LoginManager()
    {
        //通过JsonMgr直接读取数据
        //登录数据
        loginData = JsonMgr.Instance.LoadData<LoginData>("LoginData");
        //注册数据
        registerData = JsonMgr.Instance.LoadData<RegisterData>("RegisterData");
        //服务器数据
        serverData = JsonMgr.Instance.LoadData<List<ServerInfo>>("ServerInfos");
    }

    /// <summary>
    /// 存储登录数据
    /// </summary>
    public void SaveLoginData()
    {
        JsonMgr.Instance.SaveData(loginData, "LoginData");
    }
    /// <summary>
    /// 注册成功后清理登录数据
    /// </summary>
    public void CleanLoginData()
    {
        loginData.serverId = 0;
        loginData.isAutoLogin = false;
        loginData.isRememberPS = false;

    }
    /// <summary>
    /// 存储注册数据
    /// </summary>
    public void SaveRegisterData()
    {
        JsonMgr.Instance.SaveData(registerData, "RegisterData");
    }
    /// <summary>
    /// 注册方法
    /// </summary>
    /// <param name="userName">用户名</param>
    /// <param name="passWord">密码</param>
    /// <returns></returns>
    public bool RegisterUser(string userName, string passWord)
    {
        //判断是否已经存在用户名
        if (registerData.registerInfo.ContainsKey(userName))
            //存在，返回false
            return false;
        //不存在,则可以注册，存储用户名和密码
        registerData.registerInfo.Add(userName, passWord);
        //存储Json数据
        SaveRegisterData();
        return true;
    }
    /// <summary>
    /// 验证登录时用户名和密码是否正确
    /// </summary>
    /// <param name="userName"></param>
    /// <param name="passWord"></param>
    /// <returns></returns>
    public bool CheckInfo(string userName, string passWord)
    {
        // //判断用户名是否正确
        // if (registerData.registerInfo.ContainsKey(userName))
        // {
        //     //判断密码是否正确
        //     if (registerData.registerInfo[userName] == passWord)
        //         return true;
        //     //return false;这句可省略
        // }
        // return false;
        return registerData.registerInfo.TryGetValue(userName, out string value) && value == passWord;

    }
}
